Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

mutexify

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

mutexify

mutex lock for javascript

  • 1.4.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
95K
increased by2.66%
Maintainers
1
Weekly downloads
 
Created
Source

mutexify

Bike shed mutex lock implementation in node.js

npm install mutexify

build status

Hasn't this been done before? Yes, but the specific semantics of this made some of my code simpler.

Usage

var mutexify = require('mutexify')
var lock = mutexify()

lock(function(release) {
  console.log('i am now locked')
  setTimeout(function() {
    release()
  }, 1000)
})

lock(function(release) {
  console.log('1 second later')
  release()
})

A common pattern is to call a callback after you release the lock. To do this in a one-liner pass the callback and the value to release(cb, err, value)

var write = function(data, cb) {
  lock(function(release) {
    fs.writeFile('locked-file.txt', data, release.bind(null, cb))
  })
}

mutexify guarantees that the order that a mutex was requested in is the order that access will be given.

You can read the lock's current state on the lock.locked property.

Usage with promises

mutexify provides a Promise-based alternative.

const mutexify = require('mutexify/promise')

;(async () => {
  var lock = mutexify()

  var release = await lock()
  console.log('i am now locked')
  setTimeout(function () {
    release()
  }, 1000)

  release = await lock()
  console.log('1 second later')
  release()
})()

License

MIT

Keywords

FAQs

Package last updated on 29 Nov 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc